import axios from 'axios'
import store from '@/store'
import { getToken } from '@/utils/auth'
// import { Message } from 'element-ui'
import { Notify } from 'vue-ydui/dist/lib.rem/dialog'

// create an axios instance
const service = axios.create({
  baseURL: process.env.BASE_API, // api的base_url
  timeout: 15000 // request timeout
})
// request interceptor
service.interceptors.request.use(config => {
  // Do something before request is sent
  if (store.getters.token) {
    config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带token-- 为自定义key 请根据实际情况自行修改
  }
  return config
}, error => {
  // Do something with request error
  console.log(error) // for debug
  Promise.reject(error)
})

// respone interceptor
service.interceptors.response.use(
  /**
   * 下面的注释为通过response自定义code来标示请求状态，当code返回如下情况为权限有问题，登出并返回到登录页
   * 如通过xmlhttprequest 状态码标识 逻辑可写在下面error中
   */
  response => {
    const res = response.data
    if ([400001, 400002, 400003, 400004].indexOf(res.status_code) !== -1) {
      // Message({
      //   message: '登录已过期请重新登录',
      //   type: 'error',
      //   duration: 4 * 1000
      // })
      store.dispatch('FedLogOut').then(() => {
        // router.push({ path: '/login', query: { shop_id: store.state.user.shopInfo.shop_id }})
      })
    }
    return response
  },
  error => {
    console.log('err' + error)// for debug
    Notify({
      mes: error.message,
      timeout: 3000
    })
    return Promise.reject(error)
  })

export default service
